CIOpenFileDialog wraps the
IFileOpenDialog interface. Extends the
IFileDialog interface by adding methods specific to the
open dialog.
CIOpenFileDialog wraps the
IFileSaveDialog interface. Extends the
IFileDialog interface by adding methods specific to the
save dialog, which include those that provide support for the collection
of metadata to be persisted with the file.
Both also wrap the IFileDialogEvents interface, which exposes methods that allow notification of events within a common file dialog, and the IFileDialogCustomize interface, which exposes methods that allow an application to add controls to a common file dialog.
Include file: AfxNova/CIOpenSaveFile.inc
| Name | Description |
|---|---|
| Constructor (CIOpenFileDialog) | Creates a dialog box that lets the user specify the drive, directory, and the name of a file or set of files to be opened. |
| Constructor (CISaveFileDialog) | Creates a dialog box that lets the user specify the drive, directory, and name of a file to save. |
DIM pofd AS CIOpenFileDialog
DIM psfd AS CISaveFileDialog
Open File Dialog:
#define _WIN32_WINNT &h0602
#include once "AfxNova/CWindow.inc"
#include once "AfxNova/CIOpenSaveFile.inc"
#include once "AfxNova/CIFileDialogEvents.inc"
USING AfxNova
DIM pofd AS CIOpenFileDialog
' // Set the file types
pofd.AddFileType("FB code files", "*.bas;*.inc;*.bi")
pofd.AddFileType("Executable files", "*.exe;*.dll")
pofd.AddFileType("All files", "*.*")
pofd.SetFileTypes()
' // Multiple selection (default is single selection)
DIM options AS FILEOPENDIALOGOPTIONS = pofd.GetOptions
pofd.SetOptions(options OR FOS_ALLOWMULTISELECT)
' // Optional: Set the title of the dialog
' pofd.SetTitle("A Single-Selection Dialog")
' // Set the folder
pofd.SetFolder(CURDIR)
pofd.SetDefaultExtension("bas")
pofd.SetFileTypeIndex(1)
' // Set events
DIM pfde AS ANY PTR = NEW CIFileDialogEvents
pofd.SetEvents(pfde)
' // Display the dialog
' // change hwnd for your parent window
DIM hr AS HRESULT = pofd.ShowOpen(hwnd)
' // Folder name
print "Folder name: "; pofd.GetFolder
' *** Single selection ***
' // Get the result
IF hr = S_OK THEN
print pofd.GetResultString
END IF
' *** Multiple selection ***
DIM dwsRes AS DWSTRING = pofd.GetResultsString
FOR i AS LONG = 1 TO pofd.GetResultsCount
PRINT pofd.ParseResults(dwsRes, i)
NEXT
Save File Dialog:
#define _WIN32_WINNT &h0602
#include once "AfxNova/CWindow.inc"
#include once "AfxNova/CIOpenSaveFile.inc"
#include once "AfxNova/CIFileDialogEvents.inc"
USING AfxNova
DIM psfd AS CISaveFileDialog
' // Set the file types
psfd.AddFileType("FB code files", "*.bas;*.inc;*.bi")
psfd.AddFileType("Executable files", "*.exe;*.dll")
psfd.AddFileType("All files", "*.*")
psfd.SetFileTypes()
' // Optional: Set the title of the dialog
' psfd.SetTitle("Save File Dialog")
' // Set the folder
psfd.SetFolder(CURDIR)
psfd.SetDefaultExtension("bas")
psfd.SetFileTypeIndex(1)
' // Set events
DIM pfde AS ANY PTR = NEW CIFileDialogEvents
psfd.SetEvents(pfde)
' // Display the dialog
' // change hwnd for your parent window
DIM hr AS HRESULT = psfd.ShowSave(hwnd)
' // Folder name
print "Folder name: "; psfd.GetFolder
' // Get the result
IF hr = S_OK THEN
print psfd.GetResultString
END IF
| Name | Description |
|---|---|
| AddFileType | Adds a file type and pattern to the table. |
| GetPtr | Returns the underlying IFileOpenDialog interface pointer. |
| GetIFileDialogPtr | Returns the underlying IFileDialog interface pointer. |
| SetEvents | Assigns an event handler that listens for events coming from the dialog. |
| ShowOpen | Displays the open file dialog. |
| ShowSave | Displays the save file dialog. |
| Name | Description |
|---|---|
| AddPlace | Adds a folder to the list of places available for the user to open or save items. |
| Advise | Assigns an event handler that listens for events coming from the dialog. |
| ClearClientData | Instructs the dialog to clear all persisted state information. |
| Close | Closes the dialog. |
| GetCurrentSelection | Gets the user’s current selection in the dialog. |
| GetFileName | Retrieves the text currently entered in the dialog’s File name edit box. |
| GetFileTypeIndex | Gets the currently selected file type. |
| GetFolder | Gets either the folder currently selected in the dialog, or, if the dialog is not currently displayed, the folder that is to be selected when the dialog is opened. |
| GetOptions | Gets the current flags that are set to control dialog behavior. |
| GetResult | Gets the choice that the user made in the dialog. |
| GetResultString | Gets the choice that the user made in the dialog as a string. |
| SetClientGuid | Enables a calling application to associate a GUID with a dialog’s persisted state. |
| SetDefaultExtension | Sets the default extension to be added to file names. |
| SetDefaultFolder | Sets the folder used as a default if there is not a recently used folder value available. |
| SetFileName | Sets the file name that appears in the File name edit box when that dialog box is opened. |
| SetFileNameLabel | Sets the text of the label next to the file name edit box. |
| SetFileTypeIndex | Sets the file type that appears as selected in the dialog. |
| SetFileTypes | Sets the file types that the dialog can open or save. |
| SetFolder | Sets a folder that is always selected when the dialog is opened, regardless of previous user action. |
| SetOkButtonLabel | Sets the text of the Open or Save button. |
| SetOptions | Sets flags to control the behavior of the dialog. |
| SetTitle | Sets the title of the dialog. |
| Unadvise | Removes an event handler that was attached through the Advise method. |
| Name | Description |
|---|---|
| SetCancelButtonLabel | Adds a folder to the list of places available for the user to open or save items. |
| SetNavigationRoot | Specifies a top-level location from which to begin browsing a namespace, for instance in the Save dialog’s Browse folder option. Users cannot navigate above this location. |
| Name | Description |
|---|---|
| ApplyProperties | Applies a set of properties to an item using the Shell’s copy engine. |
| GetProperties | Retrieves the set of property values for a saved item or an item in the process of being saved. |
| SetCollectedProperties | Specifies which properties will be collected in the save dialog. |
| SetProperties | Provides a property store that defines the default values to be used for the item being saved. |
| SetSaveAsItem | Sets an item to be used as the initial entry in a Save As dialog. |
Adds a file type and pattern to the table.
FUNCTION AddFileType (BYVAL pwszName AS WSTRING PTR, BYVAL pwszSpec AS WSTRING PTR)
| Parameter | Description |
|---|---|
| pfpwszNamede | The name of the filter. |
| pwszSpec | A semi-comma separated list of file types. |
Usage example:
DIM pofd AS CIOpenFileDialog = CIOpenFileDialog(50, 50)
// Set the file types
pofd.AddFileType("FB code files", "*.bas;*.inc;*.bi")
pofd.AddFileType("Executable files", "*.exe;*.dll")
pofd.AddFileType("All files", "*.*")
pofd.SetFileTypes()
Returns the underlying IFileOpenDialog interface pointer.
FUNCTION CISaveFileDialog.GetPtr () AS IFileSaveDialog PTR
Don’t release the returned pointer.
Returns the underlying IFileDialog interface pointer.
FUNCTION CISaveFileDialog.GetIFileDialogPtr () AS IFileDialog PTR
The returned pointer must be released with the Release method of the IFileDialog interface when no longer needed.
Assigns an event handler that listens for events coming from the dialog.
FUNCTION SetEvents (BYVAL pfde as IFileDialogEvents PTR) AS DWORD
| Parameter | Description |
|---|---|
| pfde | A pointer to an IFileDialogEvents implementation that will receive events from the dialog. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Displays the Open File Dialog.
FUNCTION ShowOpen (BYVAL hwndOwner AS HWND) AS HRESULT
| Parameter | Description |
|---|---|
| hwndOwner | A handle to the window that owns the dialog box. This member can be any valid window handle, or it can be NULL if the dialog box has no owner. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Displays the Save File Dialog.
FUNCTION ShowSave (BYVAL hwndOwner AS HWND) AS HRESULT
| Parameter | Description |
|---|---|
| hwndOwner | A handle to the window that owns the dialog box. This member can be any valid window handle, or it can be NULL if the dialog box has no owner. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Adds a folder to the list of places available for the user to open or save items.
FUNCTION AddPlace (BYVAL psi AS IShellItem PTR, BYVAL fdap AS FDAP) AS HRESULT
| Parameter | Description |
|---|---|
| psi | A pointer to an IShellItem that represents the folder to be made available to the user. This can only be a folder. |
| fdap | Specifies where the folder is placed within the list. See FDAP enumeration. |
FDAP enumeration
| Constant | Value | Description |
|---|---|---|
| FDAP_BOTTOM | 0 | The place is added to the bottom of the default list. |
| FDAP_TOP | 1 | The place is added to the top of the default list. |
Assigns an event handler that listens for events coming from the dialog.
FUNCTION Advise (BYVAL pfde as IFileDialogEvents PTR) AS DWORD
| Parameter | Description |
|---|---|
| pfde | A pointer to an IFileDialogEvents implementation that will receive events from the dialog. |
A value identifying this event handler. When the client is finished with the dialog, that client must call the Unadvise method with this value.
Instructs the dialog to clear all persisted state information.
FUNCTION ClearClientData () AS HRESULT
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Persisted information can be associated with an application or a GUID. If a GUID was set by using IFileDialog::SetClientGuid, that GUID is used to clear persisted information.
Closes the dialog.
FUNCTION Close (BYVAL hr AS HRESULT) AS HRESULT
| Parameter | Description |
|---|---|
| hr | The code that will be returned by Show to indicate that the dialog was closed before a selection was made. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
An application can call this method from a callback method or function while the dialog is open. The dialog will close and the Show method will return with the HRESULT specified in hr.
If this method is called, there is no result available for the GetResult or GetResults methods, and they will fail if called.
Gets the folder used as a default if there is not a recently used folder value available.
FUNCTION GetCurrentSelection (BYVAL sigdnName AS SIGDN = SIGDN_NORMALDISPLAY) AS DWSTRING
| Parameter | Description |
|---|---|
| sigdnName | Requests the form of an item’s display name to retrieve . |
SIGDN Enumeration
| Constant | Description |
|---|---|
| SIGDN_NORMALDISPLAY | Returns the display name relative to the parent folder. In UI this name is generally ideal for display to the user. |
| SIGDN_PARENTRELATIVEPARSING | Returns the parsing name relative to the parent folder. This name is not suitable for use in UI. |
| SIGDN_DESKTOPABSOLUTEPARSING | Returns the parsing name relative to the desktop. This name is not suitable for use in UI. |
| SIGDN_PARENTRELATIVEEDITING | Returns the editing name relative to the parent folder. In UI this name is suitable for display to the user. |
| SIGDN_DESKTOPABSOLUTEEDITING | Returns the editing name relative to the desktop. In UI this name is suitable for display to the user. |
| SIGDN_FILESYSPATH | Returns the item’s file system path, if it has one. Only items that report SFGAO_FILESYSTEM have a file system path. When an item does not have a file system path, a call to IShellItem.GetDisplayName on that item will fail. In UI this name is suitable for display to the user in some cases, but note that it might not be specified for all items. |
| SIGDN_URL | Returns the item’s URL, if it has one. Some items do not have a URL, and in those cases a call to IShellItem.GetDisplayName will fail. This name is suitable for display to the user in some cases, but note that it might not be specified for all items. |
| SIGDN_PARENTRELATIVEFORADDRESSBAR | Returns the path relative to the parent folder in a friendly format as displayed in an address bar. This name is suitable for display to the user. |
| SIGDN_PARENTRELATIVE | Returns the path relative to the parent folder. |
| SIGDN_PARENTRELATIVEFORUI | Introduced in Windows 8. |
The folder name.
Retrieves the text currently entered in the dialog’s File name edit box.
FUNCTION GetFileName () AS DWSTRING
The folder name.
The text in the File name edit box does not necessarily reflect the item the user chose. To get the item the user chose, use GetResult or GetResultString.
Gets the file type that appears as selected in the dialog.
FUNCTION GetFileTypeIndex () AS UINT
Gets the currently selected file type.
The index of the selected file type in the file type array passed to SetFileTypes in its cFileTypes parameter.
Note This is a one-based index rather than zero-based.
Gets either the folder currently selected in the dialog, or, if the dialog is not currently displayed, the folder that is to be selected when the dialog is opened.
FUNCTION GetFolder (BYVAL sigdnName AS SIGDN = SIGDN_NORMALDISPLAY) AS DWSTRING
| Parameter | Description |
|---|---|
| sigdnName | Requests the form of an item’s display name to retrieve . |
SIGDN Enumeration
| Constant | Description |
|---|---|
| SIGDN_NORMALDISPLAY | Returns the display name relative to the parent folder. In UI this name is generally ideal for display to the user. |
| SIGDN_PARENTRELATIVEPARSING | Returns the parsing name relative to the parent folder. This name is not suitable for use in UI. |
| SIGDN_DESKTOPABSOLUTEPARSING | Returns the parsing name relative to the desktop. This name is not suitable for use in UI. |
| SIGDN_PARENTRELATIVEEDITING | Returns the editing name relative to the parent folder. In UI this name is suitable for display to the user. |
| SIGDN_DESKTOPABSOLUTEEDITING | Returns the editing name relative to the desktop. In UI this name is suitable for display to the user. |
| SIGDN_FILESYSPATH | Returns the item’s file system path, if it has one. Only items that report SFGAO_FILESYSTEM have a file system path. When an item does not have a file system path, a call to IShellItem.GetDisplayName on that item will fail. In UI this name is suitable for display to the user in some cases, but note that it might not be specified for all items. |
| SIGDN_URL | Returns the item’s URL, if it has one. Some items do not have a URL, and in those cases a call to IShellItem.GetDisplayName will fail. This name is suitable for display to the user in some cases, but note that it might not be specified for all items. |
| SIGDN_PARENTRELATIVEFORADDRESSBAR | Returns the path relative to the parent folder in a friendly format as displayed in an address bar. This name is suitable for display to the user. |
| SIGDN_PARENTRELATIVE | Returns the path relative to the parent folder. |
| SIGDN_PARENTRELATIVEFORUI | Introduced in Windows 8. |
The folder name.
Gets the current flags that are set to control dialog behavior.
FUNCTION GetOptions () AS FILEOPENDIALOGOPTIONS
A value made up of one or more of the FILEOPENDIALOGOPTIONS values.
| Constant | Value | Description |
|---|---|---|
| FOS_OVERWRITEPROMPT | &h2 | When saving a file, prompt before overwriting an existing file of the same name. This is a default value for the Save dialog. |
| FOS_STRICTFILETYPES | &h4 | In the Save dialog, only allow the user to choose a file that has one of the file name extensions specified through SetFileTypes. |
| FOS_NOCHANGEDIR | &h8 | Don’t change the current working directory. |
| FOS_PICKFOLDERS | &h20 | Present an Open dialog that offers a choice of folders rather than files. |
| FOS_FORCEFILESYSTEM | &h40 | Ensures that returned items are file system items (SFGAO_FILESYSTEM). Note that this does not apply to items returned by GetCurrentSelection. |
| FOS_ALLNONSTORAGEITEMS | &h80 | Enables the user to choose any item in the Shell namespace, not just those with SFGAO_STREAM or SFAGO_FILESYSTEM attributes. This flag cannot be combined with FOS_FORCEFILESYSTEM. |
| FOS_NOVALIDATE | &h100 | Do not check for situations that would prevent an application from opening the selected file, such as sharing violations or access denied errors. |
| FOS_ALLOWMULTISELECT | &h200 | Enables the user to select multiple items in the open dialog. Note that when this flag is set, the IFileOpenDialog interface must be used to retrieve those items. |
| FOS_PATHMUSTEXIST | &h800 | The item returned must be in an existing folder. This is a default value. |
| FOS_FILEMUSTEXIST | &h1000 | The item returned must exist. This is a default value for the Open dialog. |
| FOS_CREATEPROMPT | &h2000 | Prompt for creation if the item returned in the open dialog does not exist. Note that this does not actually create the item. |
| FOS_SHAREAWARE | &h4000 | In the case of a sharing violation when an application is opening a file, call the application back through OnShareViolation for guidance. This flag is overridden by FOS_NOVALIDATE. |
| FOS_NOREADONLYRETURN | &h8000 | Do not return read-only items. This is a default value for the Save dialog. |
| FOS_NOTESTFILECREATE | &h10000 | Do not test whether creation of the item as specified in the Save dialog will be successful. If this flag is not set, the calling application must handle errors, such as denial of access, discovered when the item is created. |
| FOS_HIDEMRUPLACES | &h20000 | Hide the list of places from which the user has recently opened or saved items. This value is not supported as of Windows 7. |
| FOS_HIDEPINNEDPLACES | &h40000 | Hide items shown by default in the view’s navigation pane. This flag is often used in conjunction with the AddPlace method, to hide standard locations and replace them with custom locations. Windows 7 and later. Hide all of the standard namespace locations (such as Favorites, Libraries, Computer, and Network) shown in the navigation pane. Windows Vista. Hide the contents of the Favorite Links tree in the navigation pane. Note that the category itself is still displayed, but shown as empty. |
| FOS_NODEREFERENCELINKS | &h100000 | Shortcuts should not be treated as their target items. This allows an application to open a .lnk file rather than what that file is a shortcut to. |
| FOS_OKBUTTONNEEDSINTERACTION | &h200000 | The OK button will be disabled until the user navigates the view or edits the filename (if applicable). Note: Disabling of the OK button does not prevent the dialog from being submitted by the Enter key. |
| FOS_DONTADDTORECENT | &h2000000 | Do not add the item being opened or saved to the recent documents list (SHAddToRecentDocs). |
| FOS_FORCESHOWHIDDEN | &h10000000 | Include hidden and system items. |
| FOS_DEFAULTNOMINIMODE | &h20000000 | Indicates to the Save As dialog box that it should open in expanded mode. Expanded mode is the mode that is set and unset by clicking the button in the lower-left corner of the Save As dialog box that switches between Browse Folders and Hide Folders when clicked. This value is not supported as of Windows 7. |
| FOS_FORCEPREVIEWPANEON | &h40000000 | Indicates to the Open dialog box that the preview pane should always be displayed. |
| FOS_SUPPORTSTREAMABLEITEMS | &h80000000 | Indicates that the caller is opening a file as a stream (BHID_Stream), so there is no need to download that file. |
Gets the choice that the user made in the dialog.
FUNCTION GetResult () AS IShellItem PTR
A pointer to an IShellItem that represents the user’s choice.
Gets the choice that the user made in the dialog.
FUNCTION GetResultString (BYVAL sigdnName AS SIGDN = SIGDN_NORMALDISPLAY) AS DWSTRING
| Parameter | Description |
|---|---|
| sigdnName | Requests the form of an item’s display name to retrieve . |
SIGDN Enumeration
| Constant | Description |
|---|---|
| SIGDN_NORMALDISPLAY | Returns the display name relative to the parent folder. In UI this name is generally ideal for display to the user. |
| SIGDN_PARENTRELATIVEPARSING | Returns the parsing name relative to the parent folder. This name is not suitable for use in UI. |
| SIGDN_DESKTOPABSOLUTEPARSING | Returns the parsing name relative to the desktop. This name is not suitable for use in UI. |
| SIGDN_PARENTRELATIVEEDITING | Returns the editing name relative to the parent folder. In UI this name is suitable for display to the user. |
| SIGDN_DESKTOPABSOLUTEEDITING | Returns the editing name relative to the desktop. In UI this name is suitable for display to the user. |
| SIGDN_FILESYSPATH | Returns the item’s file system path, if it has one. Only items that report SFGAO_FILESYSTEM have a file system path. When an item does not have a file system path, a call to IShellItem::GetDisplayName on that item will fail. In UI this name is suitable for display to the user in some cases, but note that it might not be specified for all items. |
| SIGDN_URL | Returns the item’s URL, if it has one. Some items do not have a URL, and in those cases a call to IShellItem::GetDisplayName will fail. This name is suitable for display to the user in some cases, but note that it might not be specified for all items. |
| SIGDN_PARENTRELATIVEFORADDRESSBAR | Returns the path relative to the parent folder in a friendly format as displayed in an address bar. This name is suitable for display to the user. |
| SIGDN_PARENTRELATIVE | Returns the path relative to the parent folder. |
| SIGDN_PARENTRELATIVEFORUI | Introduced in Windows 8. |
The choice that the user made in the dialog.
Enables a calling application to associate a GUID with a dialog’s persisted state.
FUNCTION SetClientGuid (BYVAL guid AS GUID PTR) AS HRESULT
| Parameter | Description |
|---|---|
| guid | The GUID to associate with this dialog state. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
A dialog’s state can include factors such as the last visited folder and the position and size of the dialog.
Typically, this state is persisted based on the name of the executable file. By specifying a GUID, an application can have different persisted states for different versions of the dialog within the same application (for example, an import dialog and an open dialog).
SetClientGuid should be called immediately after creation of the dialog object.
Sets the default extension to be added to file names.
FUNCTION SetDefaultExtension (BYVAL pwszDefaultExtension AS WSTRING PTR) AS HRESULT
| Parameter | Description |
|---|---|
| pwszDefaultExtension | A pointer to a buffer that contains the extension text. This string should not include a leading period. For example, “jpg” is correct, while “.jpg” is not. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
If this method is called before showing the dialog, the dialog will update the default extension automatically when the user chooses a new file type (see SetFileTypes).
Sets the folder used as a default if there is not a recently used folder value available.
FUNCTION SetDefaultFolder (BYVAL psi AS IShellItem PTR) AS HRESULT
| Parameter | Description |
|---|---|
| psi | A pointer to the interface that represents the folder. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Sets the file name that appears in the File name edit box when that dialog box is opened.
FUNCTION SetFileName (BYVAL pwszName AS WSTRING PTR) AS HRESULT
| Parameter | Description |
|---|---|
| pwszName | A pointer to the name of the file. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Sets the file name that appears in the File name edit box when that dialog box is opened.
FUNCTION SetFileNameLabel (BYVAL pwszLabel AS WSTRING PTR) AS HRESULT
| Parameter | Description |
|---|---|
| pwszLabel | Sets the text of the label next to the file name edit box. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Sets the file type that appears as selected in the dialog.
FUNCTION SetFileTypeIndex (BYVAL iFileType AS UINT) AS HRESULT
| Parameter | Description |
|---|---|
| iFileType | The index of the file type in the file type array passed to SetFileTypes in its cFileTypes parameter. Note that this is a one-based index, not zero-based. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Sets the file types that the dialog can open or save.
FUNCTION SetFileTypes (BYVAL cFileTypes AS UINT, BYVAL rgFilterSpec AS COMDLG_FILTERSPEC PTR) AS HRESULT
| Parameter | Description |
|---|---|
| cFileTypes | The number of elements in the array specified by rgFilterSpec. |
| rgFilterSpec | A pointer to an array of COMDLG_FILTERSPEC structures, each representing a file type. |
If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code, including the following:
| Return code | Description |
|---|---|
| E_UNEXPECTED | The FOS_PICKFOLDERS flag was set in the SetOptions method. |
| E_INVALIDARG | The rgFilterSpec parameter is NULL. |
Sets a folder that is always selected when the dialog is opened, regardless of previous user action.
FUNCTION SetFolder (BYVAL pwszFolderName AS WSTRING PTR) AS HRESULT
| Parameter | Description |
|---|---|
| pwszFolderName | The number of elements in the array specified by rgFilterSpec. |
If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code, including the following:
This folder overrides any “most recently used” folder. If this method is called while the dialog is displayed, it causes the dialog to navigate to the specified folder.
In general, we do not recommended the use of this method. If you call SetFolder before you display the dialog box, the most recent location that the user saved to or opened from is not shown. Unless there is a very specific reason for this behavior, it is not a good or expected user experience and should therefore be avoided. In almost all instances, SetDefaultFolder is the better method.
As of Windows 7, if the path of the folder specified through psi is the default path of a known folder, the known folder’s current path is used in the dialog. That path might not be the same as the path specified in psi; for instance, if the known folder has been redirected. If the known folder is a library (virtual folders Documents, Music, Pictures, and Videos), the library’s path is used in the dialog. If the specified library is hidden (as they are by default as of Windows 8.1), the library’s default save location is used in the dialog, such as the Microsoft OneDrive Documents folder for the Documents library. Because of these mappings, the folder location used in the dialog might not be exactly as you specified when you called this method.
Sets the text of the Open or Save button.
FUNCTION SetOkButtonLabel (BYVAL pwszText AS WSTRING PTR) AS HRESULT
| Parameter | Description |
|---|---|
| pwszText | A pointer to a buffer that contains the button text. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Sets the current flags that are set to control dialog behavior.
FUNCTION SetOptions (BYVAL fos AS FILEOPENDIALOGOPTIONS) AS HRESULT
| Parameter | Description |
|---|---|
| fos | A value made up of one or more of the FILEOPENDIALOGOPTIONS values. |
| Constant | Value | Description |
|---|---|---|
| FOS_OVERWRITEPROMPT | &h2 | When saving a file, prompt before overwriting an existing file of the same name. This is a default value for the Save dialog. |
| FOS_STRICTFILETYPES | &h4 | In the Save dialog, only allow the user to choose a file that has one of the file name extensions specified through SetFileTypes. |
| FOS_NOCHANGEDIR | &h8 | Don’t change the current working directory. |
| FOS_PICKFOLDERS | &h20 | Present an Open dialog that offers a choice of folders rather than files. |
| FOS_FORCEFILESYSTEM | &h40 | Ensures that returned items are file system items (SFGAO_FILESYSTEM). Note that this does not apply to items returned by GetCurrentSelection. |
| FOS_ALLNONSTORAGEITEMS | &h80 | Enables the user to choose any item in the Shell namespace, not just those with SFGAO_STREAM or SFAGO_FILESYSTEM attributes. This flag cannot be combined with FOS_FORCEFILESYSTEM. |
| FOS_NOVALIDATE | &h100 | Do not check for situations that would prevent an application from opening the selected file, such as sharing violations or access denied errors. |
| FOS_ALLOWMULTISELECT | &h200 | Enables the user to select multiple items in the open dialog. Note that when this flag is set, the IFileOpenDialog interface must be used to retrieve those items. |
| FOS_PATHMUSTEXIST | &h800 | The item returned must be in an existing folder. This is a default value. |
| FOS_FILEMUSTEXIST | &h1000 | The item returned must exist. This is a default value for the Open dialog. |
| FOS_CREATEPROMPT | &h2000 | Prompt for creation if the item returned in the open dialog does not exist. Note that this does not actually create the item. |
| FOS_SHAREAWARE | &h4000 | In the case of a sharing violation when an application is opening a file, call the application back through OnShareViolation for guidance. This flag is overridden by FOS_NOVALIDATE. |
| FOS_NOREADONLYRETURN | &h8000 | Do not return read-only items. This is a default value for the Save dialog. |
| FOS_NOTESTFILECREATE | &h10000 | Do not test whether creation of the item as specified in the Save dialog will be successful. If this flag is not set, the calling application must handle errors, such as denial of access, discovered when the item is created. |
| FOS_HIDEMRUPLACES | &h20000 | Hide the list of places from which the user has recently opened or saved items. This value is not supported as of Windows 7. |
| FOS_HIDEPINNEDPLACES | &h40000 | Hide items shown by default in the view’s navigation pane. This flag is often used in conjunction with the AddPlace method, to hide standard locations and replace them with custom locations. Windows 7 and later. Hide all of the standard namespace locations (such as Favorites, Libraries, Computer, and Network) shown in the navigation pane. Windows Vista. Hide the contents of the Favorite Links tree in the navigation pane. Note that the category itself is still displayed, but shown as empty. |
| FOS_NODEREFERENCELINKS | &h100000 | Shortcuts should not be treated as their target items. This allows an application to open a .lnk file rather than what that file is a shortcut to. |
| FOS_OKBUTTONNEEDSINTERACTION | &h200000 | The OK button will be disabled until the user navigates the view or edits the filename (if applicable). Note: Disabling of the OK button does not prevent the dialog from being submitted by the Enter key. |
| FOS_DONTADDTORECENT | &h2000000 | Do not add the item being opened or saved to the recent documents list (SHAddToRecentDocs). |
| FOS_FORCESHOWHIDDEN | &h10000000 | Include hidden and system items. |
| FOS_DEFAULTNOMINIMODE | &h20000000 | Indicates to the Save As dialog box that it should open in expanded mode. Expanded mode is the mode that is set and unset by clicking the button in the lower-left corner of the Save As dialog box that switches between Browse Folders and Hide Folders when clicked. This value is not supported as of Windows 7. |
| FOS_FORCEPREVIEWPANEON | &h40000000 | Indicates to the Open dialog box that the preview pane should always be displayed. |
| FOS_SUPPORTSTREAMABLEITEMS | &h80000000 | Indicates that the caller is opening a file as a stream (BHID_Stream), so there is no need to download that file. |
Sets the title of the dialog.
FUNCTION SetTitle (BYVAL pwszTitle AS WSTRING PTR) AS HRESULT
| Parameter | Description |
|---|---|
| pwszTitle | A pointer to a buffer that contains the title text. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Removes an event handler that was attached through the Advise method.
FUNCTION Unadvise BYVAL dwCookie AS DWORD() AS HRESULT
| Parameter | Description |
|---|---|
| dwCookie | The DWORD value that represents the event handler. This value is obtained through a call to the Advise method. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Applies a set of properties to an item using the Shell’s copy engine.
FUNCTION ApplyProperties (BYVAL psi AS IShellItem PTR, BYVAL pStore AS IPropertyStore PTR, _
BYVAL hWnd AS HWND, BYVAL pSink AS IFileOperationProgressSink PTR) AS HRESULT
| Parameter | Description |
|---|---|
| psi | Pointer to the IShellItem that represents the file being saved. This is usually the item retrieved by GetResult. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Retrieves the set of property values for a saved item or an item in the process of being saved.
FUNCTION GetProperties (BYVAL ppStore AS IPropertyStore PTR PTR) AS HRESULT
| Parameter | Description |
|---|---|
| ppStore | Address of a pointer to an IPropertyStore that receives the property values. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Specifies which properties will be collected in the save dialog.
FUNCTION SetCollectedProperties (BYVAL pList AS IPropertyDescriptionList PTR, _
BYVAL fAppendDefault AS WINBOOL) AS HRESULT
| Parameter | Description |
|---|---|
| pList | Pointer to the interface that represents the list of properties to collect. This parameter can be NULL. |
| fAppendDefault | TRUE to show default properties for the currently selected filetype in addition to the properties specified by pList. FALSE to show only properties specified by pList. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
The calling application can use the PSGetPropertyDescriptionListFromString function to construct an IPropertyDescriptionList from a string such as “prop:Comments;Subject;”.
For more information about property schemas, see ]Property Schemas](https://learn.microsoft.com/en-us/windows/win32/properties/building-property-handlers-property-schemas).
SetCollectedProperties can be called at any time before the dialog is displayed or while it is visible. If different properties are to be collected depending on the chosen filetype, then SetCollectedProperties can be called in response to OnTypeChange.
Note By default, no properties are collected in the save dialog.
Provides a property store that defines the default values to be used for the item being saved.
FUNCTION SetProperties (BYVAL pStore AS IPropertyStore PTR) AS HRESULT
| Parameter | Description |
|---|---|
| pStore | Pointer to the interface that represents the property store that contains the associated metadata. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
This method can be called at any time before the dialog is opened or while the dialog is showing. If an item has inherent properties, this method should be called with those properties before showing the dialog.
When using Save As, the application should provide the properties of the item being saved to the Save dialog. Those properties should be retrieved from the original item by calling GetPropertyStore with the GPS_HANDLERPROPERTIESONLY flag.
To retrieve the properties of the saved item (which may have been modified by the user) after the dialog closes, call GetProperties.
To turn on property collection and indicate which properties should be displayed in the Save dialog, use SetCollectedProperties.
Sets an item to be used as the initial entry in a Save As dialog.
FUNCTION SetSaveAsItem (BYVAL psi AS IShellItem PTR) AS HRESULT
| Parameter | Description |
|---|---|
| psi | Pointer to an IShellItem that represents the item. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
The name of the item is displayed in the file name edit box, and the containing folder is opened in the view. This would generally be used when the application is saving an item that already exists. For new items, use SetFileName.
Replaces the default text “Cancel” on the common file dialog’s Cancel button.
FUNCTION SetCancelButtonLabel (BYVAL pwszLabel AS LPCWSTR) AS HRESULT
| Parameter | Description |
|---|---|
| pwszLabel | Pointer to a string that contains the new text to display on the button. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
Changing the text on the Cancel button can be useful for situations where the OnFileOk method is used to accumulate items, and the button text should be Done instead of Cancel, for example.
Specifies a top-level location from which to begin browsing a namespace, for instance in the Save dialog’s Browse folder option. Users cannot navigate above this location.
FUNCTION SetNavigationRoot (BYVAL psi AS IShellItem PTR) AS HRESULT
| Parameter | Description |
|---|---|
| psi | Pointer to an IShellItem object that represents the navigation root. |
If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.
SetNavigationRoot can be used by applications that want to restrict navigation to a certain area of the Shell namespace. Items in the navigation pane are replaced with the supplied item, to guide the user from navigating outside of this part of the namespace.
This method cannot be called while the dialog is being displayed.